package com.yeqian.mapper;

import com.github.pagehelper.Page;
import com.yeqian.pojo.Tag;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;
import java.util.Map;

/**
 * @Author : yeqian
 * @Date : 2020/12/28 15:14
 * 标签数据库访问层
 */
public interface TagMapper extends Mapper<Tag> {

    /**
     * 查询标签总数量
     *
     * @param
     * @return java.lang.Integer
     * @author yeqian
     * @date 2021/1/16 11:37
     */
    Integer getTagCount();

    /**
     * 获取标签的url
     *
     * @param
     * @return java.util.List<java.lang.String>
     * @author yeqian
     * @date 2021/1/10 14:58
     */
    List<String> getUrl();

    /**
     * 获取文章与标签的对应关系
     *
     * @param tagId
     * @return java.util.List<java.lang.Integer>
     * @author yeqian
     * @date 2021/1/2 11:46
     */
    List<Integer> getArtileAndTag(Integer tagId);

    /**
     * 查询所有的标签名
     *
     * @return
     */
    List<String> selectAllName();

    /**
     * 根据标签名查询标签Id
     *
     * @param tagName
     * @return com.yeqian.pojo.Tag
     * @author yeqian
     * @date 2021/1/1 21:17
     */
    Integer getTagByName(String tagName);

    /**
     * 删除标签与文章的关系
     *
     * @param tagId
     * @return void
     * @author yeqian
     * @date 2021/1/1 17:06
     */
    void deleteTagAndArticle(Integer tagId);

    /**
     * 根据主键查询标签
     *
     * @param tagId
     * @return com.yeqian.pojo.Tag
     * @author yeqian
     * @date 2021/1/1 15:32
     */
    Tag getTag(Integer tagId);

    /**
     * 新增标签
     *
     * @param tag
     * @return void
     * @author yeqian
     * @date 2021/1/1 11:17
     */
    void saveTag(Tag tag);

    /**
     * 获取标签对应的文章数量
     *
     * @param tagId
     * @return java.lang.Integer
     * @author yeqian
     * @date 2020/12/31 23:46
     */
    Integer getArticleTagCountById(Integer tagId);

    /**
     * 标签分页查询
     *
     * @param queryString
     * @return com.github.pagehelper.Page<com.yeqian.pojo.Tag>
     * @author yeqian
     * @date 2020/12/31 23:22
     */
    Page<Tag> listQueryPage(String queryString);

    /**
     * 获取文章的标签
     *
     * @param articleId
     * @return java.util.List<com.yeqian.pojo.Tag>
     * @author yeqian
     * @date 2020/12/28 15:15
     */
    List<Tag> getTagByArticle(Integer articleId);

    /**
     * 获取文件的标签名
     *
     * @param articleId
     * @return java.util.List<java.lang.String>
     * @author yeqian
     * @date 2021/1/2 1:16
     */
    List<String> getTagNameByArticle(Integer articleId);

    /**
     * 查询套餐占比
     *
     * @param
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author yeqian
     * @date 2021/1/16 18:12
     */
    List<Map<String, Object>> getReport();
}
